package cz.semjobKB.conllx.api;

import cz.semjobKB.conllx.node.ILinguisticWord;

/**
 * The unifying interface for text part Word
 */
public interface IWord extends ITextPart, ILinguisticWord {
	
	/**
	 * Gets the next word in the sentence where it belongs
	 * 
	 * @return next word in the sentence or null if its the last word
	 */
	public IWord getNextWord();
	
	/**
	 * Gets the parent sentence.
	 * 
	 * @return the sentence where this word belongs
	 */
	public ISentence getSentence();
	
	/**
	 * Gets the previous word.
	 * 
	 * @return the previous word in the sentence or null if its in the beginning
	 */
	public IWord getPreviousWord();
	
	/**
	 * Sets the previous word.
	 * 
	 * @param previousWord	the new previous word
	 */
	public void setPreviousWord(final IWord previousWord);

    /**
     * Sets the next word.
     *
     * @param nextWord	the new next word
     */
    public void setNextWord(final IWord nextWord);

    /**
     * Gets the linguistic word.
     *
     * @return the linguistic word
     */
    public ILinguisticWord getLinguisticWord();

}
